﻿using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint.Administration;

namespace MFD.SharePoint.TaskNotification
{
    [Serializable]
    public class TaskNotificationConfig
    {

        [Persisted]
        private DateTime _notificationSchedule;

        /// <summary>
        /// This is a special property
        /// The date part contains the last ran date used so that the job doesn't notify twice.
        /// the Time part contains the desired hour and minute when the notifaction needs to be sent
        /// </summary>
        public DateTime NotificationSchedule
        {
            get { return _notificationSchedule; }
            set { _notificationSchedule = value; }
        }

        [Persisted]
        private string _statusColumnName;

        /// <summary>
        /// Contains the name of the column that contains the status used to filter the items.
        /// </summary>
        public string StatusColumnName
        {
            get { return _statusColumnName; }
            set { _statusColumnName = value; }
        }



        [Persisted]
        private bool _enableTaskAboutToStartNotification = true;

        public bool EnableTaskAboutToStartNotification
        {
            get { return _enableTaskAboutToStartNotification; }
            set { _enableTaskAboutToStartNotification = value; }
        }

        [Persisted]
        private string _aboutToStartStatusChoice;

        public string AboutToStartStatusChoice
        {
            get { return _aboutToStartStatusChoice; }
            set { _aboutToStartStatusChoice = value; }
        }



        [Persisted]
        private string _taskAboutToStartSubject;

        public string TaskAboutToStartSubject
        {
            get { return _taskAboutToStartSubject; }
            set { _taskAboutToStartSubject = value; }
        }

        [Persisted]
        private string _taskAboutToStartBody;

        public string TaskAboutToStartBody
        {
            get { return _taskAboutToStartBody; }
            set { _taskAboutToStartBody = value; }
        }

        [Persisted]
        private int _daysBeforeStartDate = 1;

        public int DaysBeforeStartDate
        {
            get { return _daysBeforeStartDate; }
            set { _daysBeforeStartDate = value; }
        }


        [Persisted]
        private bool _enableTaskNotStartedNotification = true;

        public bool EnableTaskNotStartedNotification
        {
            get { return _enableTaskNotStartedNotification; }
            set { _enableTaskNotStartedNotification = value; }
        }

        [Persisted]
        private string _notStartedStatusChoice;

        public string NotStartedStatusChoice
        {
            get { return _notStartedStatusChoice; }
            set { _notStartedStatusChoice = value; }
        }

        [Persisted]
        private string _taskNotStartedSubject;

        public string TaskNotStartedSubject
        {
            get { return _taskNotStartedSubject; }
            set { _taskNotStartedSubject = value; }
        }

        [Persisted]
        private string _taskNotStartedBody;

        public string TaskNotStartedBody
        {
            get { return _taskNotStartedBody; }
            set { _taskNotStartedBody = value; }
        }

        [Persisted]
        private bool _enableTaskDueNotification = true;

        public bool EnableTaskDueNotification
        {
            get { return _enableTaskDueNotification; }
            set { _enableTaskDueNotification = value; }
        }

        [Persisted]
        private string _dueStatusChoice;

        public string DueStatusChoice
        {
            get { return _dueStatusChoice; }
            set { _dueStatusChoice = value; }
        }



        [Persisted]
        private string _taskDueSubject;

        public string TaskDueSubject
        {
            get { return _taskDueSubject; }
            set { _taskDueSubject = value; }
        }

        [Persisted]
        private string _taskDueBody;

        public string TaskDueBody
        {
            get { return _taskDueBody; }
            set { _taskDueBody = value; }
        }

        [Persisted]
        private int _daysBeforeDueDate = 1;

        public int DaysBeforeDueDate
        {
            get { return _daysBeforeDueDate; }
            set { _daysBeforeDueDate = value; }
        }


        [Persisted]
        private bool _enableTaskOverDueNotification = true;

        public bool EnableTaskOverDueNotification
        {
            get { return _enableTaskOverDueNotification; }
            set { _enableTaskOverDueNotification = value; }
        }

        [Persisted]
        private string _overdueStatusChoice;

        public string OverdueStatusChoice
        {
            get { return _overdueStatusChoice; }
            set { _overdueStatusChoice = value; }
        }


        [Persisted]
        private string _taskOverDueSubject;

        public string TaskOverDueSubject
        {
            get { return _taskOverDueSubject; }
            set { _taskOverDueSubject = value; }
        }

        [Persisted]
        private string _taskOverDueBody;

        public string TaskOverDueBody
        {
            get { return _taskOverDueBody; }
            set { _taskOverDueBody = value; }
        }


        [Persisted]
        private string _webURL;

        public string WebURL
        {
            get { return _webURL; }
            set { _webURL = value; }
        }

        [Persisted]
        private Guid _listID;

        public Guid ListID
        {
            get { return _listID; }
            set { _listID = value; }
        }
    }
}
